Motion estimation is the important temporal prediction tool to achieve high compression gain, but it comes with high I/O bandwidth requirement especially for HD video streams. Due to large I/O bandwidth and intense CPU processing requirements, High definition (HD) Video decoding solutions are difficult to realize as software programmable solutions. The recent digital signal processors (DSP) are able to handle CPU processing requirement by employing application specific CPU instructions, but the current software architectures designed for smaller than HD resolution are not able to exploit capabilities of recent DSPs fully. This is because of large hardware overhead due to inefficient usage of DMA bandwidth. For typical HD video stream HW overhead of up to 50% of CPU cycles is observed and scaling up CPU frequency does not improve HD video decoding performance considerably.
A bounding box algorithm is an effective way of reducing the HW overhead by combining several small transfers into single big transfer. A bounding box is hypothetical area which will be built for several blocks and typically be grown in size with every block. This process continues until it exhausts available memory for storing the bounding box. Because most of video decoding operations are macroblock based, the algorithm needs to be that the bounding box contains all the blocks in a macroblock. This can not be guaranteed with single bounding box and requires multiple bounding boxes.